package com.example.administrator.newjiajiesong.test;

import java.lang.ref.WeakReference;

/**
 * 日期：2017.01.03
 * <p>
 * 作者：xudiwei
 * <p>
 * 描述：所有Presenter的父类,处理了在MVP里有可能造成内存泄漏的可能
 */
public class BasePresenter<V> {

    private WeakReference<V> mReference;

    /**
     * 调用此方法添加View的引用到一个弱引用里
     *
     * @param v
     */
    public void attach(V v) {
        mReference = new WeakReference<V>(v);
    }

    /**
     * 调用此方法移除View的引用
     */
    public void detach() {
        if (null != mReference) {
            mReference.clear();
            mReference = null;
        }
    }

    /**
     * 获取View对象
     *
     * @return
     */
    public V getView() {
        if (null != mReference) {
            return mReference.get();
        }
        return null;
    }

}
